﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.ObjectBuilder;
using Microsoft.Practices.CompositeWeb;
using AP.LUNA.BusinessLogic;
using AP.LUNA.DataEntities;
using System.Web;
using AP.LUNA.Commons;
using AP.LUNA.Exceptions;

namespace AP.LUNA.Shell.Views
{
    public class RegistrarAsistenciaPresenter : Presenter<IRegistrarAsistenciaView>
    {

        // NOTE: Uncomment the following code if you want ObjectBuilder to inject the module controller
        //       The code will not work in the Shell module, as a module controller is not created by default
        //
        // private IShellController _controller;
        // public RegistrarAsistenciaPresenter([CreateNew] IShellController controller)
        // {
        // 		_controller = controller;
        // }
        private BLAsistencia objAsistencia = null;
        private BLAsignaturas objAsignaturas = null;
        private HttpContext context = null;
        public RegistrarAsistenciaPresenter()
        {
            objAsistencia = new BLAsistencia();
            objAsignaturas = new BLAsignaturas();
            context = HttpContext.Current;
        }
        public override void OnViewLoaded()
        {

        }

        public override void OnViewInitialized()
        {
            my_aspnet_users u = (my_aspnet_users)context.Session[Constanst.CREDENCIAL];
            //this.View.ListAsignaturas = objAsignaturas.GetbyProfesor(u.name);
            this.View.ListAsignaturas = objAsignaturas.GetbyProfesor("1065563860");
            this.View.Fecha = DateTime.Today;
        }

        // TODO: Handle other view events and set state in the view

        public void RegistrarAsistencia()
        {
            CargarAlumnos();
            this.View.IndexView = 1;
        }

        public void CargarAlumnos()
        {
            this.View.ListAlumnos = objAsistencia.GetbyAsignatura(this.View.IdAsignatura, this.View.Fecha);
        }

        public void Guardar()
        {
            try
            {
                if (this.View.Fecha > DateTime.Today)
                {
                    this.View.MsgResult = UtilPresenter.ObtenerMensaje(ExceptionCode.FECHA_SUPERIOR_HOY);
                    return;
                }
                objAsistencia.DeleteAsistencia(this.View.IdAsignatura, this.View.Fecha);
                List<asistencia> la = (List<asistencia>)this.View.ListAsistencia;
                foreach (asistencia item in la)
                {
                    objAsistencia.Save(item);
                }
                this.View.MsgResult = UtilPresenter.ObtenerMensaje(ExceptionCode.OPERACION_EXITOSA);
            }
            catch (LUNAExcepcion exc)
            {
                this.View.MsgResult = UtilPresenter.ObtenerMensaje(exc.CodeError);
            }
        }
    }
}




